ABC 399D

题目内容

题目链接

N 对夫妇,编号为 1,2,,N。这 2N 个人正在排队。试问有多少个夫妇对 i,j ,满足夫妇 i 与夫妇 j 起初均不相邻,但可以通过仅重排这四个人的位置就能让两对夫妻各自相邻?

解法

错误解法

容易注意到满足条件的 (i,j) 在序列中应当形如

,i,j,,i,j,

,i,j,,j,i,

考虑直接遍历整个序列所有的相邻对 (x,y) (代码中会自动处理成 xy 的形式)临时作下记录后继续寻找形如 (x,y)(y,x) 的相邻对,找到后答案计数加一。为了防止重复计算,可维护一个 set 负责记录所有已经被找到的对。

AC 代码

提交记录

感想

到底是怎么做到明明已经想出来做法结果硬调了一个半小时没写出正确代码的?